package com.itheima.abstract3; // package关键字：声明当前类所在的包，com.itheima.abstract3是包的完整路径，用于组织代码结构，避免类名冲突

public abstract class People { // public：访问修饰符，表示这个类可以被任何地方访问；abstract：表示这是一个抽象类，不能直接创建对象；class：关键字，用于定义类；People：类名
   // 1、模板方法设计模式。 // 这是一个注释，说明下面的方法是模板方法设计模式的核心方法
    public final void write(){ // public：访问修饰符；final：表示这个方法不能被子类重写；void：返回值类型，表示不返回任何数据；write()：方法名和括号表示这是一个方法
        System.out.println("\t\t\t《我的爸爸》"); // 调用系统输出方法，打印标题，\t表示制表符（缩进）
        System.out.println("\t我爸爸是一个好人，我特别喜欢他，他对我很好，我来介绍一下："); // 打印开头段落
        // 2、模板方法知道子类一定要写这个正文，但是每个子类写的信息是不同的，父类定义一个抽象方法
        // 具体的实现交给子类来重写正文。 // 这两行是注释，解释模板方法设计模式的工作原理
        writeMain(); // 调用抽象方法writeMain()，这个方法由子类提供具体实现，这是模板方法设计模式的关键
        System.out.println("\t我爸爸真好，你有这样的爸爸吗？"); // 打印结尾段落
    } // write方法结束标记

    public abstract void writeMain(); // public：访问修饰符；abstract：表示这是一个抽象方法，没有方法体；void：返回值类型；writeMain()：方法名；这个方法由子类必须实现
} // People类结束标记
